package claseMarcadorBowling;

import org.junit.Assert;
import org.junit.Test;

public class PruebaMarcadorDeBowling {

	@Test
	public void testJuegoConStrikeYSemiPlenos() {
		MarcadorDeBowling miMarcador = new MarcadorDeBowling("Ignacio Reilly");
		//ronda 1
		miMarcador.tirar(5);
		miMarcador.tirar(3);
		//ronda 2
		miMarcador.tirar(10);
		//ronda 3
		miMarcador.tirar(10);
		//ronda 4
		miMarcador.tirar(10);
		//ronda 5
		miMarcador.tirar(10);
		//ronda 6
		miMarcador.tirar(2);
		miMarcador.tirar(6);
		//ronda 7
		miMarcador.tirar(6);
		miMarcador.tirar(4);
		//ronda 8
		miMarcador.tirar(4);
		miMarcador.tirar(4);
		//ronda 9
		miMarcador.tirar(10);
		//ronda 10
		miMarcador.tirar(4);
 		miMarcador.tirar(6);
		miMarcador.tirar(10);
		
		Assert.assertEquals("Ignacio Reilly", miMarcador.getJugador());
		Assert.assertEquals(178, miMarcador.getPuntos());
	}

	@Test
	public void testJuegoPerfecto() {
		MarcadorDeBowling miMarcador = new MarcadorDeBowling("Ignacio Reilly");
		//ronda 1
		miMarcador.tirar(10);
		//ronda 2
		miMarcador.tirar(10);
		//ronda 3
		miMarcador.tirar(10);
		//ronda 4
		miMarcador.tirar(10);
		//ronda 5
		miMarcador.tirar(10);
		//ronda 6
		miMarcador.tirar(10);
		//ronda 7
		miMarcador.tirar(10);
		//ronda 8
		miMarcador.tirar(10);
		//ronda 9
		miMarcador.tirar(10);
		//ronda 10
		miMarcador.tirar(10);
 		miMarcador.tirar(10);
		miMarcador.tirar(10);
		
		Assert.assertEquals("Ignacio Reilly", miMarcador.getJugador());
		Assert.assertEquals(300, miMarcador.getPuntos());
	}

	@Test
	public void testJuegoSinPuntos() {
		MarcadorDeBowling miMarcador = new MarcadorDeBowling("Ignacio Reilly");
		//ronda 1
		miMarcador.tirar(0);
		miMarcador.tirar(0);
		//ronda 2
		miMarcador.tirar(0);
		miMarcador.tirar(0);
		//ronda 3
		miMarcador.tirar(0);
		miMarcador.tirar(0);
		//ronda 4
		miMarcador.tirar(0);
		miMarcador.tirar(0);
		//ronda 5
		miMarcador.tirar(0);
		miMarcador.tirar(0);
		//ronda 6
		miMarcador.tirar(0);
		miMarcador.tirar(0);
		//ronda 7
		miMarcador.tirar(0);
		miMarcador.tirar(0);
		//ronda 8
		miMarcador.tirar(0);
		miMarcador.tirar(0);
		//ronda 9
		miMarcador.tirar(0);
		miMarcador.tirar(0);
		//ronda 10
		miMarcador.tirar(0);
		miMarcador.tirar(0);
		miMarcador.tirar(0);
		
		Assert.assertEquals("Ignacio Reilly", miMarcador.getJugador());
		Assert.assertEquals(0, miMarcador.getPuntos());
	}

	@Test
	public void testJuegosSinStrikeNiSemiPlenos() {
		MarcadorDeBowling miMarcador = new MarcadorDeBowling("Ignacio Reilly");
		//ronda 1
		miMarcador.tirar(2);
		miMarcador.tirar(3);
		//ronda 2
		miMarcador.tirar(6);
		miMarcador.tirar(0);
		//ronda 3
		miMarcador.tirar(1);
		miMarcador.tirar(1);
		//ronda 4
		miMarcador.tirar(8);
		miMarcador.tirar(1);
		//ronda 5
		miMarcador.tirar(9);
		miMarcador.tirar(0);
		//ronda 6
		miMarcador.tirar(0);
		miMarcador.tirar(8);
		//ronda 7
		miMarcador.tirar(0);
		miMarcador.tirar(3);
		//ronda 8
		miMarcador.tirar(4);
		miMarcador.tirar(4);
		//ronda 9
		miMarcador.tirar(5);
		miMarcador.tirar(3);
		//ronda 10
		miMarcador.tirar(1);
		miMarcador.tirar(2);
		
		Assert.assertEquals("Ignacio Reilly", miMarcador.getJugador());
		Assert.assertEquals(61, miMarcador.getPuntos());
	}
	
	@Test
	public void testJuegosConSemiPlenos() {
		MarcadorDeBowling miMarcador = new MarcadorDeBowling("Ignacio Reilly");
		//ronda 1
		miMarcador.tirar(2);
		miMarcador.tirar(8);
		//ronda 2
		miMarcador.tirar(6);
		miMarcador.tirar(4);
		//ronda 3
		miMarcador.tirar(1);
		miMarcador.tirar(9);
		//ronda 4
		miMarcador.tirar(8);
		miMarcador.tirar(2);
		//ronda 5
		miMarcador.tirar(9);
		miMarcador.tirar(1);
		//ronda 6
		miMarcador.tirar(2);
		miMarcador.tirar(8);
		//ronda 7
		miMarcador.tirar(7);
		miMarcador.tirar(3);
		//ronda 8
		miMarcador.tirar(4);
		miMarcador.tirar(6);
		//ronda 9
		miMarcador.tirar(5);
		miMarcador.tirar(5);
		//ronda 10
		miMarcador.tirar(1);
		miMarcador.tirar(2);
		miMarcador.tirar(3);
		
		Assert.assertEquals("Ignacio Reilly", miMarcador.getJugador());
		Assert.assertEquals(136, miMarcador.getPuntos());
	}
	
	@Test
	public void testJuegoConUnUnicoStrike(){
		MarcadorDeBowling miMarcador = new MarcadorDeBowling("Ignacio Reilly");
		//ronda 1
		miMarcador.tirar(10);
		//ronda 2
		miMarcador.tirar(6);
		miMarcador.tirar(3);
		//ronda 3
		miMarcador.tirar(0);
		miMarcador.tirar(9);
		//ronda 4
		miMarcador.tirar(8);
		miMarcador.tirar(0);
		//ronda 5
		miMarcador.tirar(0);
		miMarcador.tirar(1);
		//ronda 6
		miMarcador.tirar(2);
		miMarcador.tirar(0);
		//ronda 7
		miMarcador.tirar(0);
		miMarcador.tirar(3);
		//ronda 8
		miMarcador.tirar(4);
		miMarcador.tirar(0);
		//ronda 9
		miMarcador.tirar(0);
		miMarcador.tirar(5);
		//ronda 10
		miMarcador.tirar(1);
		miMarcador.tirar(2);
		miMarcador.tirar(3);
		
		Assert.assertEquals("Ignacio Reilly", miMarcador.getJugador());
		Assert.assertEquals(63, miMarcador.getPuntos());
	}
	
	@Test
	public void testJuegoConUnUnicoSemiPleno(){
		MarcadorDeBowling miMarcador = new MarcadorDeBowling("Ignacio Reilly");
		//ronda 1
		miMarcador.tirar(4);
		miMarcador.tirar(4);
		//ronda 2
		miMarcador.tirar(6);
		miMarcador.tirar(4);
		//ronda 3
		miMarcador.tirar(0);
		miMarcador.tirar(9);
		//ronda 4
		miMarcador.tirar(8);
		miMarcador.tirar(0);
		//ronda 5
		miMarcador.tirar(0);
		miMarcador.tirar(1);
		//ronda 6
		miMarcador.tirar(2);
		miMarcador.tirar(0);
		//ronda 7
		miMarcador.tirar(0);
		miMarcador.tirar(3);
		//ronda 8
		miMarcador.tirar(4);
		miMarcador.tirar(0);
		//ronda 9
		miMarcador.tirar(0);
		miMarcador.tirar(5);
		//ronda 10
		miMarcador.tirar(1);
		miMarcador.tirar(2);
		miMarcador.tirar(3);
		
		Assert.assertEquals("Ignacio Reilly", miMarcador.getJugador());
		Assert.assertEquals(53, miMarcador.getPuntos());
	}
	
	@Test
	public void testGetPuntosSinTerminarJuegoConSemiPleno(){
		MarcadorDeBowling marcador = new MarcadorDeBowling("Ignacio Reilly");
		
		//ronda 1
		marcador.tirar(4);
		marcador.tirar(6);
		//ronda 2
		marcador.tirar(3);
		marcador.tirar(5);
		//ronda 3
		marcador.tirar(10);
		//ronda 4
		marcador.tirar(7);
		marcador.tirar(3);
		
		Assert.assertEquals("Ignacio Reilly", marcador.getJugador());
		Assert.assertEquals(51, marcador.getPuntos());
	}
	
	@Test
	public void testGetPuntosSinTerminarJuegoConStrike(){
		MarcadorDeBowling marcador = new MarcadorDeBowling("Ignacio Reilly");
		
		marcador.tirar(10);
        marcador.tirar(10);
        marcador.tirar(3);
        marcador.tirar(6);
        
        Assert.assertEquals("Ignacio Reilly", marcador.getJugador());
		Assert.assertEquals(51, marcador.getPuntos());
	}
}
